$OpenBSD: patch-GNUmakefile,v 1.3 2013/03/14 11:16:02 dcoppa Exp $
--- GNUmakefile.orig	Thu Mar 14 11:33:28 2013
+++ GNUmakefile	Thu Mar 14 11:41:45 2013
@@ -1,4 +1,9 @@
+ifndef CXXFLAGS
 CXXFLAGS = -DNDEBUG -g -O2
+endif
+ifndef LDFLAGS
+LDFLAGS = -lpthread
+endif
 # -O3 fails to link on Cygwin GCC version 4.5.3
 # -fPIC is supported. Please report any breakage of -fPIC as a bug.
 # CXXFLAGS += -fPIC
@@ -9,118 +14,12 @@ ARFLAGS = -cr	# ar needs the dash on OpenBSD
 RANLIB = ranlib
 CP = cp
 MKDIR = mkdir
-EGREP = egrep
-UNAME = $(shell uname)
-ISX86 = $(shell uname -m | $(EGREP) -c "i.86|x86|i86|amd64")
-IS_SUN_CC = $(shell $(CXX) -V 2>&1 | $(EGREP) -c "CC: Sun")
-IS_LINUX = $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -c "linux")
-IS_MINGW = $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -c "mingw")
-CLANG_COMPILER = $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "clang version")
 
 # Default prefix for make install
 ifeq ($(PREFIX),)
 PREFIX = /usr
 endif
 
-ifeq ($(CXX),gcc)	# for some reason CXX is gcc on cygwin 1.1.4
-CXX = g++
-endif
-
-ifeq ($(ISX86),1)
-
-GCC42_OR_LATER = $(shell $(CXX) -v 2>&1 | $(EGREP) -c "^gcc version (4.[2-9]|[5-9])")
-INTEL_COMPILER = $(shell $(CXX) --version 2>&1 | $(EGREP) -c "\(ICC\)")
-ICC111_OR_LATER = $(shell $(CXX) --version 2>&1 | $(EGREP) -c "\(ICC\) ([2-9][0-9]|1[2-9]|11\.[1-9])")
-GAS210_OR_LATER = $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.[1-9][0-9]|[3-9])")
-GAS217_OR_LATER = $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.1[7-9]|2\.[2-9]|[3-9])")
-GAS219_OR_LATER = $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.19|2\.[2-9]|[3-9])")
-
-ifneq ($(GCC42_OR_LATER),0)
-ifeq ($(UNAME),Darwin)
-CXXFLAGS += -arch x86_64 -arch i386
-else
-CXXFLAGS += -march=native
-endif
-endif
-
-ifneq ($(INTEL_COMPILER),0)
-CXXFLAGS += -wd68 -wd186 -wd279 -wd327
-ifeq ($(ICC111_OR_LATER),0)
-# "internal error: backend signals" occurs on some x86 inline assembly with ICC 9 and some x64 inline assembly with ICC 11.0
-# if you want to use Crypto++'s assembly code with ICC, try enabling it on individual files
-CXXFLAGS += -DCRYPTOPP_DISABLE_ASM
-endif
-endif
-
-ifeq ($(GAS210_OR_LATER),0)	# .intel_syntax wasn't supported until GNU assembler 2.10
-CXXFLAGS += -DCRYPTOPP_DISABLE_ASM
-else
-ifeq ($(GAS217_OR_LATER),0)
-CXXFLAGS += -DCRYPTOPP_DISABLE_SSSE3
-else
-ifeq ($(GAS219_OR_LATER),0)
-CXXFLAGS += -DCRYPTOPP_DISABLE_AESNI
-endif
-endif
-ifeq ($(UNAME),SunOS)
-CXXFLAGS += -Wa,--divide	# allow use of "/" operator
-endif
-endif
-
-endif	# ISX86
-
-ifeq ($(UNAME),)	# for DJGPP, where uname doesn't exist
-CXXFLAGS += -mbnu210
-else
-CXXFLAGS += -pipe
-endif
-
-ifeq ($(IS_MINGW),1)
-LDLIBS += -lws2_32
-endif
-
-ifeq ($(IS_LINUX),1)
-LDFLAGS += -pthread
-ifneq ($(shell uname -i | $(EGREP) -c "(_64|d64)"),0)
-M32OR64 = -m64
-endif
-endif
-
-ifeq ($(UNAME),Darwin)
-AR = libtool
-ARFLAGS = -static -o
-CXX = c++
-IS_GCC2 = $(shell $(CXX) -v 2>&1 | $(EGREP) -c gcc-932)
-ifeq ($(IS_GCC2),1)
-CXXFLAGS += -fno-coalesce-templates -fno-coalesce-static-vtables
-LDLIBS += -lstdc++
-LDFLAGS += -flat_namespace -undefined suppress -m
-endif
-endif
-
-ifeq ($(UNAME),SunOS)
-LDLIBS += -lnsl -lsocket
-M32OR64 = -m$(shell isainfo -b)
-endif
-
-ifneq ($(CLANG_COMPILER),0)
-CXXFLAGS += -Wno-tautological-compare
-endif
-
-ifneq ($(IS_SUN_CC),0)	# override flags for CC Sun C++ compiler
-CXXFLAGS = -DNDEBUG -O -g0 -native -template=no%extdef $(M32OR64)
-LDFLAGS =
-AR = $(CXX)
-ARFLAGS = -xar -o
-RANLIB = true
-SUN_CC10_BUGGY = $(shell $(CXX) -V 2>&1 | $(EGREP) -c "CC: Sun .* 5\.10 .* (2009|2010/0[1-4])")
-ifneq ($(SUN_CC10_BUGGY),0)
-# -DCRYPTOPP_INCLUDE_VECTOR_CC is needed for Sun Studio 12u1 Sun C++ 5.10 SunOS_i386 128229-02 2009/09/21 and was fixed in May 2010
-# remove it if you get "already had a body defined" errors in vector.cc
-CXXFLAGS += -DCRYPTOPP_INCLUDE_VECTOR_CC
-endif
-endif
-
 SRCS = $(wildcard *.cpp)
 ifeq ($(SRCS),)				# workaround wildcard function bug in GNU Make 3.77
 SRCS = $(shell echo *.cpp)
@@ -137,12 +36,12 @@ LIBIMPORTOBJS = $(LIBOBJS:.o=.import.o)
 TESTIMPORTOBJS = $(TESTOBJS:.o=.import.o)
 DLLTESTOBJS = dlltest.dllonly.o
 
-all: cryptest.exe
-static: libcryptopp.a
-dynamic: libcryptopp.so
+SHARED_LIB = libcryptopp.so.${LIBcryptopp_VERSION}
 
+all: libcryptopp.a ${SHARED_LIB}
+
 test: cryptest.exe
-	./cryptest.exe v
+	LD_LIBRARY_PATH=${WRKDIST} ./cryptest.exe v
 
 clean:
 	-$(RM) cryptest.exe libcryptopp.a libcryptopp.so $(LIBOBJS) $(TESTOBJS) cryptopp.dll libcryptopp.dll.a libcryptopp.import.a cryptest.import.exe dlltest.exe $(DLLOBJS) $(LIBIMPORTOBJS) $(TESTI MPORTOBJS) $(DLLTESTOBJS)
@@ -167,8 +66,11 @@ libcryptopp.a: $(LIBOBJS)
 libcryptopp.so: $(LIBOBJS)
 	$(CXX) -shared -o $@ $(LIBOBJS)
 
+${SHARED_LIB}: ${LIBOBJS}
+	$(CXX) -shared -o $@ $(CXXFLAGS) $(LIBOBJS) $(LDFLAGS)
+
 cryptest.exe: libcryptopp.a $(TESTOBJS)
-	$(CXX) -o $@ $(CXXFLAGS) $(TESTOBJS) ./libcryptopp.a $(LDFLAGS) $(LDLIBS)
+	$(CXX) -o $@ $(CXXFLAGS) $(TESTOBJS) -L${WRKDIST} -lcryptopp $(LDFLAGS) $(LDLIBS)
 
 nolib: $(OBJS)		# makes it faster to test changes
 	$(CXX) -o ct $(CXXFLAGS) $(OBJS) $(LDFLAGS) $(LDLIBS)
